package com.emiage.ddutils;

import android.content.Context;

/*
dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关，一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个，不依赖像素。
dp: dip是一样的
px: pixels(像素). 不同设备显示效果相同，一般我们HVGA代表320x480像素，这个用的比较多。
pt: point，是一个标准的长度单位，1pt＝1/72英寸，用于印刷业，非常简单易用；
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。
in：（英寸）长度单位。
mm：（毫米）长度单位。

*/
public class DensityUtil {

	/**
	 * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
	 */
	public static int dip2px(Context context, float dpValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dpValue * scale + 0.5f);
	}

	/**
	 * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
	 */
	public static int px2dip(Context context, float pxValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (pxValue / scale + 0.5f);
	}


//	final static float DPI = EmipianApplication.dm.densityDpi;
//	final static float SCALE = EmipianApplication.dm.density;

	/**
	 * 毫米转像素
	 *
	 * @param f
	 * @return
	 */
	public static float MM2Pixel(float f, Context context) {
		float result = (float) ((f * context.getResources().getDisplayMetrics().densityDpi) / 25.4);
		return result;
	}

	/**
	 * 磅转像素
	 *
	 * @param f
	 * @return
	 */
	public static float Pt2Pixel(float f, Context context) {
		float result = (f * context.getResources().getDisplayMetrics().densityDpi) / 72;
		return result;

	}

	public static int dip2px(float dpValue, Context context) {
		return (int) (dpValue * context.getResources().getDisplayMetrics().density + 0.5f);
	}

	public static int px2dip(float pxValue, Context context) {
		return (int) (pxValue / context.getResources().getDisplayMetrics().density + 0.5f);
	}

	/**
	 * 像素转成毫米
	 *
	 * @param f
	 * @return
	 */
	public static float Pixel2MM(float f, Context context) {
		float result = (float) ((f * 25.4) / context.getResources().getDisplayMetrics().densityDpi);
		return result;
	}

	/**
	 * 字体大小转成磅
	 *
	 * @param f
	 * @return
	 */
	public static float Pixel2Pt(float f, Context context) {
		float result = (f * 72) / context.getResources().getDisplayMetrics().densityDpi;
		return result;
	}

	/**
	 * 磅转毫米
	 *
	 * @param f
	 * @return
	 */
	public static float Pt2MM(float f) {
		float result = (float) ((f * 25.4) / 72);
		return result;
	}

	public static float getDpi(Context context) {
		return context.getResources().getDisplayMetrics().densityDpi;
	}

	public static float getScale(Context context) {
		return context.getResources().getDisplayMetrics().density / 2;
	}

	public static float sp2px(float value, Context context) {
		float spvalue = value * context.getResources().getDisplayMetrics().scaledDensity + 0.5f;
		return (int) spvalue;
	}
}
